﻿#include<iostream>
#include<set>
using namespace std;

//int main()
//{
//	//默认的仿函数是less
//	set<int> s1;
//	//greater是仿函数
//	//set<int,greater<int>> s1;
//	s1.insert(1);
//	s1.insert(4);
//	s1.insert(5);
//	s1.insert(1);
//	//迭代器
//	set<int>::reverse_iterator i = s1.rbegin();
//	while (i != s1.rend())
//	{
//		cout << *i << " ";
//		i++;
//	}
//	cout << endl;
//
//	return 0;
//}

//int main()
//{
//	set<int,greater<int>> s1 = {7 ,3,5,8,90 };
//
//	set<int>::iterator i = s1.begin();
//	while (i != s1.end())
//	{
//		cout << *i << " ";
//		i++;
//	}
//	cout << endl;
//
//	s1.insert({ 4,34,12,56,768 });
//	for (auto i : s1)
//	{
//		cout << i << " ";
//	}
//	cout << endl;
//}

//int main()
//{
//	set<string> s1 = { "sdgg","fang","jian" };
//
//	set<string>::iterator i = s1.begin();
//	while (i != s1.end())
//	{
//		cout << *i << " ";
//		i++;
//	}
//	cout << endl;
//
//}



//#include <iostream>
//#include <list>
//using namespace std;
//
//int main()
//{
//	list<int> s1 = {1,2,3,4,5};
//	//i++往前走
//	list<int>::iterator i = s1.begin();
//	while (i != s1.end())
//	{
//		cout << *i << " ";
//		i++;
//	}
//	cout << endl;
//
//	//i--往后走
//	list<int>::iterator it = s1.end();
//	while (it != s1.begin())
//	{
//		it--;
//		cout << *it << " ";
//	}
//	cout << endl;
//
//	return 0;
//}

//#include<vector>
//int main()
//{
//	vector<int> v1 = { 34,12,56,34,123 };
//
//	vector<int>::iterator it = v1.begin() + 3;
//	//auto it = v1.begin() + 3;
//	cout << *it << endl;
//
//	return 0;
//}


//int main() {
//    //单链表
//    forward_list<int> f1 = { 1, 2, 3, 4, 5 };
//
//    //单向迭代器
//    forward_list<int>::iterator i = f1.begin();
//    while (i != f1.end())
//    {
//        cout << *i << " ";
//        i++;
//    }
//    cout << endl;
//    
//    return 0;
//}

//int main()
//{
//	set<int> s1;
//	// 插⼊⼀段initializer_list列表值，已经存在的值插⼊失败 
//	s1.insert({1,2,3,4});
//
//
//	for (auto i : s1) 
//	{
//		cout << i << " ";
//	}
//	cout << endl;
//
//	return 0;
//
//}

//int main()
//{
//	set<string> s1 = { "sdgfdg","jian","ping" };
//	// 遍历string⽐较ascll码⼤⼩顺序遍历的 
//	for (auto& i : s1)
//	{
//		cout << i << " ";
//	}
//	cout << endl;
//
//	return 0;
//}

//int main()
//{
//	set<int> s1 = { 5,3,2,1 };
//	//删除第一个值
//	s1.erase(s1.begin());
//	//删除最后一个值
//	s1.erase(--s1.end());
//	for (auto i : s1)
//	{
//		cout << i << "";
//	}
//	cout << endl;
//
//	return 0;
//}

//int main()
//{
//	set<int> s1 = { 5,4,5,5,5,5,5,2,1 };
//	//for (auto i : s1)
//	//{
//	//	cout << i << " ";
//	//}
//	//cout << endl;
//	//int x;
//	//cin >> x;
//	//int num = s1.erase(x);
//
//	//if (num == 0)
//	//{
//	//	cout << x << "没有这个数值" << endl;
//	//}
//
//	//for (auto i : s1)
//	//{
//	//	cout << i << " ";
//	//}
//	//cout << endl;
//	int x;
//	cin >> x;
//	set<int>::iterator it = s1.find(x);
//	if (it != s1.end())
//	{
//		s1.erase(it);
//	}
//	else
//	{
//		cout << "不存在" << endl;
//	}
//	for (auto i : s1)
//	{
//		cout << i << " ";
//	}
//	cout << endl;
//
//	return 0;
//}

int main()
{
	set<int> s1 = { 10,20,30,40,50,60,70,80 };
	for (auto i : s1)
	{
		cout << i << " ";
	}
	cout << endl;

	set<int>::iterator add = s1.lower_bound(30);
	set<int>::iterator arr = s1.upper_bound(60);

	s1.erase(add, arr);
	for (auto i : s1)
	{
		cout << i << " ";
	}
	cout << endl;
	return 0;
}